草庐IT

git pull --rebase

全部标签

Git rebase 到上游

所以我fork了一个项目,做了一些更改并将它们推送到origin/master。我不打算将这些更改发送回上游。到现在为止一切都很好,但现在我有一些更改我想向上游推送。我可以rebase回到不同分支的上游,并提交给那个分支吗?我可以从我的分支提交这些更改吗?我是否严重破坏了我的存储库? 最佳答案 不,没有修改。只需从upstream/master分支,在那里进行提交,然后您可以推送(或pull请求)这些提交,这些提交非常适合upstream/master。如果你有A---B---C,其中upstream/master在A而master

git - 为什么我想做 git rebase?

我看到很多人都在谈论gitrebase以及它的作用,例如Hg:Howtodoarebaselikegit'srebase人们谈论它取得的成就(给出线性历史),例如这里Gitrebaseloseshistory,thenwhyrebase?但我不明白你为什么要这样做。返回并修改您的提交历史(这肯定涉及一些带有n向冲突的丑陋merge)似乎是一项大的费用。而且我可以想象它可能会产生很大误导的情况,(例如,如果两个人以不同的方式解决同一个问题,但历史并没有显示他们的工作是并行发生的;似乎也很容易导致批评和怨恨在一些高压编码环境中)。您获得的是更容易理解但不正确的历史图表。是什么让它值得付出努

git - 为什么我想做 git rebase?

我看到很多人都在谈论gitrebase以及它的作用,例如Hg:Howtodoarebaselikegit'srebase人们谈论它取得的成就(给出线性历史),例如这里Gitrebaseloseshistory,thenwhyrebase?但我不明白你为什么要这样做。返回并修改您的提交历史(这肯定涉及一些带有n向冲突的丑陋merge)似乎是一项大的费用。而且我可以想象它可能会产生很大误导的情况,(例如,如果两个人以不同的方式解决同一个问题,但历史并没有显示他们的工作是并行发生的;似乎也很容易导致批评和怨恨在一些高压编码环境中)。您获得的是更容易理解但不正确的历史图表。是什么让它值得付出努

git - 在没有交互式 rebase 的情况下压缩历史中间的两个 Git 提交

我正在将旧的SVN存储库转换为Git,其中包括尝试在所有正确的位置获取所有分支/标签。那部分进展顺利,但有时我想在我的脚本中添加一个历史提交,稍后我想在下一次提交时压缩。问题是我不是一个一个地抓取提交,而是作为一个大组抓取,所以我无法在将它们从SVN存储库中pull出时压缩它们。最后,我的存储库如下所示:*(branch_2,HEAD)commit5*commit4*commit3*SQUASHME!*(branch_1)commit2*commit1我希望能够使用SQUASHME!压缩commit3,这对于交互式rebase来说显然很容易,但在脚本中更具挑战性。我似乎遇到的主要问题是

git - 在没有交互式 rebase 的情况下压缩历史中间的两个 Git 提交

我正在将旧的SVN存储库转换为Git,其中包括尝试在所有正确的位置获取所有分支/标签。那部分进展顺利,但有时我想在我的脚本中添加一个历史提交,稍后我想在下一次提交时压缩。问题是我不是一个一个地抓取提交,而是作为一个大组抓取,所以我无法在将它们从SVN存储库中pull出时压缩它们。最后,我的存储库如下所示:*(branch_2,HEAD)commit5*commit4*commit3*SQUASHME!*(branch_1)commit2*commit1我希望能够使用SQUASHME!压缩commit3,这对于交互式rebase来说显然很容易,但在脚本中更具挑战性。我似乎遇到的主要问题是

git - rebase merge 提交

假设我的Git存储库最初有两个分支:Foo和Bar。...─Foo...─Bar我创建了第三个分支FooBar,我在其中提交了其他两个分支的merge。...─Foo──┐FooBar...─Bar──┘FooBar现在是Foo和Bar之前的一次提交。接下来,我做了更多工作,仅在Foo上提交了几次。...──A───┬──B──C──D──FooFooBar...─Bar──┘问题是:由于分支FooBar的第一个父级不再是Foo,我能否将分支FooBar中的merge提交rebase以再次将Foo和Bar作为其两个父级?换句话说,我可以将Foo中的开发连同未更改的Bar一起merge到

git - rebase merge 提交

假设我的Git存储库最初有两个分支:Foo和Bar。...─Foo...─Bar我创建了第三个分支FooBar,我在其中提交了其他两个分支的merge。...─Foo──┐FooBar...─Bar──┘FooBar现在是Foo和Bar之前的一次提交。接下来,我做了更多工作,仅在Foo上提交了几次。...──A───┬──B──C──D──FooFooBar...─Bar──┘问题是:由于分支FooBar的第一个父级不再是Foo,我能否将分支FooBar中的merge提交rebase以再次将Foo和Bar作为其两个父级?换句话说,我可以将Foo中的开发连同未更改的Bar一起merge到

git - 在原始分支中压缩提交后如何 rebase ?

我有A--B--Cmaster\Dbranch0然后我将B和C压缩成B'。我如何rebasebranch0使其看起来像这样:A--B'master\Dbranch0 最佳答案 使用--ontogitrebase的参数,它改变了git重放工作的基线。gitcheckoutbranch0在这种状态下,您应该仍然在git历史记录中看到C。gitrebase--ontoB'C这转化为:获取自提交C以来我当前分支中的所有提交(在您的情况下只是D)并在B'您还可以使用可选的一次执行checkout和rebase的参数:gitrebase--on

git - 在原始分支中压缩提交后如何 rebase ?

我有A--B--Cmaster\Dbranch0然后我将B和C压缩成B'。我如何rebasebranch0使其看起来像这样:A--B'master\Dbranch0 最佳答案 使用--ontogitrebase的参数,它改变了git重放工作的基线。gitcheckoutbranch0在这种状态下,您应该仍然在git历史记录中看到C。gitrebase--ontoB'C这转化为:获取自提交C以来我当前分支中的所有提交(在您的情况下只是D)并在B'您还可以使用可选的一次执行checkout和rebase的参数:gitrebase--on

git - 我怎样才能看到我还剩下多少 rebase?

在进行过程中如何查看rebase上剩余的工作量?即我想看看git还剩下多少工作要检查。 最佳答案 您可能正在寻找有关普通rebase而不是交互式rebase的信息。非交互式rebase不显示该信息。但是,您可以通过查看rebase-apply目录找到它。在该目录中有您需要的所有信息。特别是如果您使用默认的.git目录位置运行,您可以通过运行这些命令找到它cat.git/rebase-apply/nextcat.git/rebase-apply/last如果你想知道当前正在应用的提交,那么你可以使用以下命令cat.git/rebase